﻿using Base.FileModel.DB;
using Base.FileModel.UserFile;

namespace Base.FileCollect
{
    public interface IUserFileCollect
    {
        UserFileBase[] GetFiles ( long[] ids );
        UserFileBasic[] GetFiles ( long dirId, long linkBizPk, string tag );
        UserFileDto GetFile ( long id );
        UserFileDto[] Gets ( IEnumerable<long> ids );
        UserFileBasic GetFileBasic ( long id );

        UserFileModel[] GetFiles ( List<long> linkPk, long[] dirId );
        DBUserFileList Add ( UserFileAdd add );

        void SaveFile ( long[] fileId, long linkBizPk, long[] dropId );

        void SaveFile ( UserFileDto file, long linkBizPk, long[] dropId );

        void SaveSort ( Dictionary<long, int> sort );

        long[] GetIds ( long dirId, long linkBikzPk, string tag );

        long[] GetIds ( long[] dirId, long[] linkBikzPk );

        void Drop ( long[] ids );

        void Delete ( long id );

        void Drop ( long id );

        Dictionary<long, int> GetFileNum ( long[] fileId );

        Dictionary<long, int> GetDirFileNum ( long[] dirId );

        bool CheckIsNullDir ( long dirId );
        UserFileBasic FindTempFile ( UserFileGet obj );
        void ToVoid ( long[] fileId );
        void Restore ( long[] fileId );
        Result[] GetFiles<Result> ( UserFileGetArg param ) where Result : class, new();
        void Adds ( List<UserFileAdd> adds );
    }
}